---
title: HistoryManager 历史管理器
icon: History
relatedFile: app/src/core/stage/stageManager/StageHistoryManager.tsx
---

用于管理应用程序中的操作历史记录，支持撤销、反撤销（重做）等功能，并能直接修改应用程序的舞台状态。在文件切换或保存时，历史记录应被重置。

## 内部机制

*   维护一个操作差异（Delta）列表，记录每次操作前后的状态变化。
*   通过一个指针 `currentIndex` 来追踪当前所处的历史版本。
*   限制历史记录的最大长度 `historySize`。
*   保存初始舞台状态 `initialStage` 作为历史记录的起点。

## API 方法

### `recordStep()`

记录当前操作为一个历史步骤。它会清除当前指针之后的所有历史记录，然后计算当前舞台状态与上一步状态的差异，并将此差异作为新的历史步骤添加到列表中。

### `undo()`

执行撤销操作。如果存在可撤销的历史步骤，它会将 `currentIndex` 向前移动一步，并将舞台状态恢复到上一个历史版本。

### `redo()`

执行反撤销（重做）操作。如果存在可重做的历史步骤，它会将 `currentIndex` 向后移动一步，并将舞台状态恢复到下一个历史版本。

### `get(index: number)`

根据指定的历史索引 `index`，从初始舞台状态开始，逐步应用所有历史差异，计算并返回该索引对应的舞台状态。
